インスタンスストア(i2,d2)と新型EBS(st1,sc1)の性能を比較してみた
はじめに
AWSのEC2では一部のインスタンスタイプ(t2,c4,m4など)を除き、 仮想ホストの物理筐体に内蔵されているHDD、SSDをインスタンスストア(エフェメラルディスク)として利用する事ができます。
先日、シーケンシャルアクセス性能と、コストパフォーマンスに優れたEBSのリリースがありました。
大容量のHDDをインスタンスストアを有す「d2.xlarge」(2TBのHDD、3台)で構成された6GBと、 6TBのEBSを利用するEC2構成、CPUとメモリスペックが同一な「r3.xlarge」、 CPU、帯域性能に優れる「c4.2xlarge」を採用した場合の月額費用、 まとめた結果は以下のとおりでした。
EC2インスタンス | CPUコア数 | メモリ(GB) | EBS最大帯域(GB) | ディスク種別 | ストレージ容量 | EC2費 | EBS費 | 合算(EC2+EBS) |
---|---|---|---|---|---|---|---|---|
d2.xlarge | 4 | 30.5 | 93.75 | Ephemeral | 6TB | $633.00 | $1.00 | $634.00 |
r3.xlarge | 4 | 30.5 | 62.5 | st1 | 6TB | $299.25 | $325.00 | $624.25 |
r3.xlarge | 4 | 30.5 | 62.5 | sc1 | 6TB | $299.25 | $181.00 | $480.25 |
r3.xlarge | 4 | 30.5 | 62.5 | gp2 | 6TB | $299.25 | $721.00 | $1,020.25 |
c4.2xlarge | 8 | 15 | 125 | st1 | 6TB | $399.25 | $325.00 | $724.25 |
c4.2xlarge | 8 | 15 | 125 | sc1 | 6TB | $399.25 | $181.00 | $580.25 |
c4.2xlarge | 8 | 15 | 125 | gp2 | 6TB | $399.25 | $721.00 | $1,120.25 |
先日リリースされた新しいEBS(st1、sc1)により、ストレージ容量あたりの単価としては、 「d2」のインスタンスストアを利用した場合より、EBSが廉価になるケースがある事がわかりました。
今回、ストレージとしてのIO性能などを含めた比較を実施するため、 「d2.xlarge」のインスタンスストアの性能測定を実施しました。
また、高いIO性能が期待できるとされている、「i2」のSSDベースのインスタンスストア性能についても、 この機会に測定できましたので、あわせて紹介させていただきます。
比較イメージ
* EC2を利用した分散ストレージの、ノード単体性能評価を試みました
検証環境
EC2インスタンス
- d2.xlarge:
- CPU: 4コア
- Mem: 30.5GB
- インスタンスストア: HDD(2TB)×3
- EBS最適化済
- i2.xlarge
- CPU: 4コア
- Mem: 30.5GB
- インスタンスストア: SSD(800GB)×1
- c4.2xlarge:
- CPU: 8コア
- Mem: 15GB
- インスタンスストア: なし
- EBS最適化済
- EC2のスケールアップによる、帯域拡張効果の確認に利用
測定手順
- AMI: Windows_Server-2012-RTM-Japanese-64Bit-Base-2016.02.10
- ベンチマークツール: CrystalDiskMark 5.1.2 x64
- 詳細は下記手順を踏襲しています。 新しいボリュームタイプ(sc1、st1)の性能を測定してみた
結果
インスタンスストアのディスク性能
- 「d2」の測定は2回実施しています
- 2TBのHDD単体
- Windows2012の記憶域スペースを利用し、シンプル、Raid0相当のストライピング
EC2インスタンス | ディスク種別 | Sequential Read | Sequential Write | Random Read 4KiB | Random Write 4KiB |
---|---|---|---|---|---|
d2.xlarge | (HDD:2TB x 1) | 171.071 MB/s | 167.629 MB/s | 372.8 IOPS | 341.6 IOPS |
d2.xlarge | (HDD:2TB x 3) | 500.277 MB/s | 486.582 MB/s | 1014.2 IOPS | 945.8 IOPS |
i2.xlarge | (SSD:0.8TB x1) | 466.218 MB/s | 417.005 MB/s | 58758.1 IOPS | 56664.6 IOPS |
EBS性能
- 比較対象とするため、インスタンスストア性能測定に利用した「d2.xlarge」環境にEBSをアタッチし測定を実施しました。
EC2インスタンス | ディスク種別 | Sequential Read | Sequential Write | Random Read 4KiB | Random Write 4KiB |
---|---|---|---|---|---|
xlarge | st1(2TB) | 94.411 MB/s | 94.236 MB/s | 525.9 IOPS | 524.9 IOPS |
xlarge | st1(6TB) | 94.208 MB/s | 94.205 MB/s | 535.9 IOPS | 535.9 IOPS |
xlarge | sc1(2TB) | 94.223 MB/s | 94.231 MB/s | 168.2 IOPS | 167.7 IOPS |
xlarge | sc1(6TB) | 93.602 MB/s | 94.187 MB/s | 268.3 IOPS | 268.3 IOPS |
xlarge | gp2(2TB) | 94.198 MB/s | 94.153 MB/s | 5968.3 IOPS | 5964.4 IOPS |
2xlarge | st1(2TB) | 125.359 MB/s | 125.394 MB/s | 524.9 IOPS | 524.9 IOPS |
2xlarge | st1(6TB) | 126.040 MB/s | 125.410 MB/s | 168.7 IOPS | 166.5 IOPS |
2xlarge | sc1(2TB) | 125.577 MB/s | 125.662 MB/s | 536.9 IOPS | 534.7 IOPS |
2xlarge | sc1(6TB) | 125.393 MB/s | 125.665 MB/s | 268.3 IOPS | 267.3 IOPS |
2xlarge | gp2(2TB) | 125.434 MB/s | 125.600 MB/s | 5935.1 IOP | 5941.2 IOPS |
アクセス比較
シーケンシャル性能、ランダムアクセス性能とも、インスタンスストアは「d2」「i2」とも、EBSと比較して数倍の性能がでました。
6TBのEBS、st1は500MB/s、sc1も250MB/sの最大性能に対し、今回はEC2の帯域(xlarge:93.75MB/s)がボトルネック。 インスタンスのスペックアップ(xlarge→2xlarge)による帯域拡張で、シーケンシャル性能の向上(94→125)が確認できました。 インスタンスストアもインスタンスのスペックアップにより、ディスクのストライピングなどによるIO性能向上が期待できるため、 一定の性能差は存在し続ける事と考えれます。
コスト比較
1ノード費用計算
- コストパフォーマンスの比較のため、EC2環境を分散ストレージの1ノードに見立てました。
- EBSをデータ領域とする場合、CPU、メモリは同等のr3.xlargeを利用すると仮定しました。
- 750時間を月間稼働時間とし、ノードの月額費用を求めました。
EC2インスタンス | ディスク種別 | ストレージ容量 | EC2費用 | EBS費用 | ノード費用(EC2+EBS) |
---|---|---|---|---|---|
d2.xlarge | Ephemeral | 6TB | $633.00 | $1.00 | $634.00 |
r3.xlarge | st1 | 6TB | $299.25 | $325.00 | $624.25 |
r3.xlarge | sc1 | 6TB | $299.25 | $181.00 | $480.25 |
r3.xlarge | gp2 | 6TB | $299.25 | $721.00 | $1,020.25 |
i2.xlarge | Ephemeral | 0.8TB | $765.75 | $1.00 | $766.75 |
容量比較
- データ用ストレージ容量をノードの月額費で按分し、1ドルあたりのストレージ容量を求めました。
EC2インスタンス | ディスク種別 | ストレージ容量 | ノード(EC2+EBS)費用 | 1$あたりのストレージ容量(GB) |
---|---|---|---|---|
d2.xlarge | Ephemeral | 6TB | $634.00 | $9,463.72 |
r3.xlarge | st1 | 6TB | $624.25 | $9,611.53 |
r3.xlarge | sc1 | 6TB | $480.25 | $12,493.49 |
r3.xlarge | gp2 | 6TB | $1,020.25 | $5,880.91 |
i2.xlarge | Ephemeral | 0.8TB | $766.75 | $1.04 |
シーケンシャルアクセス比較
- シーケンシャルアクセス性能をノードの月額費で按分し、1ドルあたり利用できるストレージ帯域を求めました。
EC2インスタンス | ディスク種別 | Sequential Read(MB/s) | ノード(EC2+EBS)費用 | 1$あたりのシーケンシャルアクセス性能(MB/s) |
---|---|---|---|---|
d2.xlarge | Ephemeral | 500.277 | $634.00 | 0.79 MB/s |
r3.xlarge | st1 | 94.208 | $624.25 | 0.15 MB/s |
r3.xlarge | sc1 | 93.602 | $480.25 | 0.19 MB/s |
r3.xlarge | gp2 | 94.198 | $1,020.25 | 0.09 MB/s |
i2.xlarge | Ephemeral | 466.218 | $766.75 | 0.61 MB/s |
ランダムアクセス比較
- ランダムアクセス性能をノードの月額費で按分し、1ドルあたり利用できるストレージ性能(IOPS)帯域を求めました。
EC2インスタンス | ディスク種別 | Random Read 4KiB(IOPS) | ノード(EC2+EBS)費用 | 1$あたりのストレージ性能(IOPS) |
---|---|---|---|---|
d2.xlarge | Ephemeral | 1014.2 | $634.00 | 1.60 IOPS |
r3.xlarge | st1 | 535.9 | $624.25 | 0.86 IOPS |
r3.xlarge | sc1 | 268.3 | $480.25 | 0.56 IOPS |
r3.xlarge | gp2 | 5968.3 | $1,020.25 | 5.85 IOPS |
i2.xlarge | Ephemeral | 58758.1 | $766.75 | 76.63 IOPS |
まとめ
物理ホストに直結されたインスタンスストア、高いIO性能を低コストで利用できる事から、 揮発ストレージとしての活用が有効性は高いと考えられました。
一方、アーカイブ用途としての永続性を必要とする場合、EBSの利便性、信頼性、耐障害性などの非機能要件や、 EC2環境の柔軟性、ワークロードに応じた適切なCPU、メモリ、帯域の選択が増える事を考慮すると、 新型のEBS(sc1、st1)の適正が高くなるケースも多いと思われます。
今回の検討、分散ストレージとしては小規模なノード数は一桁、数十TB程度の環境を想定した内容でしたが、 用途用法に応じた最適なアーキテクチャ、引き続き検討していきたいと思います。